package com.atwulidun.kmp04;

public class ViolentMatch {
    public static void main(String[] args) {
        String str1 = "123456456789";
        String str2 = "4567";
        System.out.println(violentMatch(str1, str2));
    }

    /**
     *
     * @param str1
     * 长度较长字符串
     * @param str2
     * 长度较短字符串
     * @return
     * 较长字符串被匹配到的第一个字符的下标
     */
    public static int violentMatch(String str1, String str2) {
        // 指向字符串str1的指针
        int i = 0;
        // 指向字符串str2的指针
        int j = 0;
        while (i < str1.length() && j < str2.length()) {
            // 如果某个字符匹配成功，则两个指针都往后移动，继续匹配下一个字符
            if (str1.charAt(i) == str2.charAt(j)) {
                i++;
                j++;
            } else {
                // 如果匹配不成功，则i回退到开始匹配字符的下一个字符，j重新置0
                i = i - j + 1;
                j = 0;
            }
        }
        // 注意：如果匹配到了，那么j == str2.length，会跳出while循环；如果匹配不到，最后会因i == str1.length而跳出while循环，此时j < str2.length()
        if (j == str2.length()) {
            return i - j;
        } else {
            return -1;
        }
    }
}
